package com.example.mydy.utils;

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.widget.ImageView;

import androidx.annotation.Nullable;

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.DataSource;
import com.bumptech.glide.load.engine.GlideException;
import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.target.Target;
import com.example.mydy.R;

/**
 * 图片加载工具类，封装Glide库
 */
public class ImageLoader {

    /**
     * 加载图片到ImageView
     *
     * @param context  上下文
     * @param imageUrl 图片URL
     * @param imageView 目标ImageView
     */
    public static void loadImage(Context context, String imageUrl, ImageView imageView) {
        if (context == null || imageView == null) {
            return;
        }

        // 判断是否为本地图片，这里简单处理，实际项目中可以更加完善
        if (imageUrl == null || imageUrl.isEmpty()) {
            imageView.setImageResource(R.drawable.ic_image_placeholder);
            return;
        }

        try {
            // 使用Glide加载图片
            Glide.with(context)
                    .load(imageUrl)
                    .placeholder(R.drawable.ic_image_placeholder) // 加载中显示的占位图
                    .error(R.drawable.ic_image_error) // 加载失败显示的图片
                    .listener(new RequestListener<Drawable>() {
                        @Override
                        public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Drawable> target, boolean isFirstResource) {
                            // 加载失败的回调，返回false表示允许Glide处理错误占位符
                            return false;
                        }

                        @Override
                        public boolean onResourceReady(Drawable resource, Object model, Target<Drawable> target, DataSource dataSource, boolean isFirstResource) {
                            // 加载成功的回调，返回false表示允许Glide处理图片渐变动画
                            return false;
                        }
                    })
                    .into(imageView);
        } catch (Exception e) {
            // 处理可能的异常
            imageView.setImageResource(R.drawable.ic_image_error);
        }
    }

    /**
     * 加载圆形图片到ImageView
     *
     * @param context  上下文
     * @param imageUrl 图片URL
     * @param imageView 目标ImageView
     */
    public static void loadCircleImage(Context context, String imageUrl, ImageView imageView) {
        if (context == null || imageView == null) {
            return;
        }

        if (imageUrl == null || imageUrl.isEmpty()) {
            imageView.setImageResource(R.drawable.ic_avatar_placeholder);
            return;
        }

        try {
            // 使用Glide加载圆形图片
            Glide.with(context)
                    .load(imageUrl)
                    .placeholder(R.drawable.ic_avatar_placeholder) // 加载中显示的占位图
                    .error(R.drawable.ic_avatar_error) // 加载失败显示的图片
                    .circleCrop() // 裁剪为圆形
                    .into(imageView);
        } catch (Exception e) {
            // 处理可能的异常
            imageView.setImageResource(R.drawable.ic_avatar_error);
        }
    }
} 